package LogicaClasesNew;

import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.ws.Endpoint;

@WebService
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
public class WsIcategoria {
   
    private Endpoint endpoint = null;
    private IcontroladorCategoria ICC;

    
    //Constructor que publica el WebService con sus metodos.
    public WsIcategoria() {
        
    Fabrica fabrica = Fabrica.getInstance();
    this.ICC = fabrica.getControladorCategoria();
    try{
    Properties preferences = new Properties();
    FileInputStream in = new FileInputStream(System.getProperty("user.home")+"/configWebServices.ini");
    preferences.load(in);
    String host = preferences.getProperty("Host");
    String port = preferences.getProperty("Port");
    endpoint = Endpoint.publish("http://"+host+":"+port+"/icategoria", this);
    }
    catch(Exception ex){
    //    endpoint = Endpoint.publish("http://localhost:8280/icategoria", this);
        }
//.....WebMethod.....
    }
    
    @WebMethod
    public void createCategoria(String NombreCat, boolean TieneProd){
        ICC.createCategoria(NombreCat, TieneProd);
    }
    
    @WebMethod
    public void createCategoriacpadre(String NombreCat,String Nompadre, boolean TieneProd){
        ICC.createCategoriacpadre(NombreCat, Nompadre, TieneProd);
    }
    
    @WebMethod
    public Categoria findCategoria(String Nombre){
        return ICC.findCategoria(Nombre);
    }
    
    @WebMethod
    public void addProductoCategoria(String Nombre, int numRefProd){
        ICC.addProductoCategoria(Nombre, numRefProd);
    }
    
    @WebMethod
    public void editCategoria(String nombreCate){
        ICC.editCategoria(nombreCate);
    }
            
    @WebMethod
    public ArrayList<Categoria> findCategoriaEntities(){
        return new ArrayList(ICC.findCategoriaEntities());
    }
    
    @WebMethod
    public boolean getTieneProd(String nameCate){
        return ICC.getTieneProd(nameCate);
    }
    
    @WebMethod
    public ArrayList<Producto> getListadoProductosXcat(String nameCate){
        return new ArrayList(ICC.getListadoProductosXcategoria(nameCate));
    }
    
    @WebMethod
    public ArrayList<Producto> getListadoCategoriaXcate(String nameCate){
        return new ArrayList(ICC.getListadoCategoriaXcategoria(nameCate));
    }
    
    @WebMethod
    public void addCatHijaToCatPadre(String catPadre, String catHija){
        ICC.addCatHijaToCatPadre(catPadre, catHija);
    }
    
    @WebMethod
    public void RemoveProductoCategoria(String Nombre, int numRefProd){
        ICC.RemoveProductoCategoria(Nombre, numRefProd);
    }
   
    
    @WebMethod(exclude = true)
	public Endpoint getEndpoint() {
            return endpoint;
    }
    
}



